草庐IT

c++ - 小数位数之和

全部标签

c++ - 我如何同时使用 GTK 和 glut?

我知道为了编写一个GTK应用程序,我写了一堆代码来描述放在主窗口中的内容,然后我调用:gtk_main();在此之后的任何代码语句都不会被执行。现在假设我希望我的GTK应用程序显示我用glut编写的内容,它本身包含一堆关于需要设置什么图形等的语句,然后以语句结束:glutMainLoop();此后的任何内容都不会执行。所以我的问题是这两个语句中的任何一个都阻止我调用另一个。有没有办法在GTK小部件内执行过剩主循环?有没有一种方法可以编写代码,以某种方式同时调用GTK主循环和过剩主循环(但从主程序调用并在单独的X窗口中呈现,而不是在小部件中)?我觉得这可以用“线程”来完成......

c++ - 在 OpenCV 中将图像转换为彩色铅笔素描

我想使用OpenCV将图像转换为彩色铅笔素描。我已经阅读了页面IwanttoconvertanimageintopencilsketchinOpenCV.我寻求的效果就像http://www.showandtell-graphics.com/photosketch.html我通过代码使用颜色减淡b_d=(b_2==255?255:min(255,b_1*255/(255-b_2)));g_d=(g_2==255?255:min(255,g_1*255/(255-g_2)));r_d=(r_2==255?255:min(255,r_1*255/(255-r_2)));好像效果不是很好。请

c++ - 我是否需要断开从 XGetXCBConnection 获得的 xcb_connection_t?

这是我看到的一些GLX代码的示例:display=XOpenDisplay(0);//...xcb_connection_t*connection=XGetXCBConnection(display);//...XCloseDisplay(display);我注意到那里没有xcb_disconnect。这个对吗?另外,显示关闭后connection是否仍然有效? 最佳答案 XCloseDisplay似乎撤消了显示的创建(因此破坏了它),并且由于XCB连接对象是从显示派生的,所以一旦显示被关闭,连接就会失效似乎是合理的关闭。

c++ - 从文件中读取大量数据并以有效的方式解析日期。如何提高海量数据的性能?

我正在从文件中读取大量数据://abc.txt10121415129-1214-18-900-123414512131232685176-59-025----etcfun(char*p,intx,inty,intz){}我尝试过使用atoi、strtok,但是当数组太大并且sscanf也是时,它们是实时耗时的很慢。如何提高海量数据的性能?我正在使用strtok进行解析。我正在寻找解析每一行的快速方法。我正在阅读每一行,然后将每一行解析为:char*ptr;ptr=strtok(str,"");while(ptr!=NULL){intvalue1=atoi(ptr);ptr=strtok

c# - C/C++ 到 C# 转换器或模拟器

假设我有一些可移植的非可视化库的C代码。代码主要依赖于CRT(没有QT/DirectX/WinAPI等依赖项)。有没有办法在C#应用程序中使用此代码?我了解托管C++,这对我来说不是一种可接受的方式。我想到了一个可以用于自动翻译的C/C++到C#转换器(我不需要一个可读输出,一个可以工作的就足够了)或者一个我可以使用的模拟器执行已编译的C/C++代码。您是否知道任何可以帮助我从C#代码使用现有C/C++代码的方法?编辑:P/Invoke也不是一个可以接受的方式。以及调用外部EXE或使用COM/ActiveX。我需要能够将C和C#代码合并到一个托管DLL或EXE中的东西。现有的C代码是库

c++ - pthreads 中的内存模型规范

使用pthread是否可以保证一个线程中的内存写入何时在其他线程中可见?与Java相比,Java语言规范有一个sectionthatspecifiestheinteractionoflocksandmemory这使得编写可移植的多线程Java代码成为可能。是否有相应的pthreads规范?当然,您总是可以让共享数据变得不稳定,但这不是我想要的。如果这取决于平台,是否有事实上的标准?还是应该使用另一个线程库? 最佳答案 POSIX在4.11MemorySynchronization中指定内存模型:Applicationsshallen

c++ - C 与 C++ 中的指针

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhydoesC++requireacastformalloc()butCdoesn’t?这段特殊的代码在C中运行良好,但在编译为C++程序时会出现编译错误。#include#includeintmain(){int(*b)[10];b=calloc(20,sizeof(int));return0;}C++编译错误是:test.cpp:Infunction‘intmain()’:test.cpp:9:28:error:invalidconversionfrom‘void*’to‘int(*)[10]’[-fp

c++ - 仅将内存分配给静态变量一次

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Definitionofglobalvariablesusinganonconstantinitializer我有这个代码:#include#includeintfoo(intnum,inti){staticint*array=malloc(sizeof(int));//ERRORHERE!!!printf("%d",array[i]);return0;}intmain(intargc,char*argv[]){inti;for(i=0;i我将代码保存为c源文件,我不能工作?错误提示:gcc-O2-Wallte

c++ - `intmax_t` 在具有 64 位 `long int` 和 `long long int` 的平台上应该是什么?

在C++标准18.4中它指定:typedef'signedintegertype'intmax_t;根据具有64位longint和64位longlongint的平台标准,这个“有符号整数类型”应该是?请注意,longint和longlongint是不同的基本类型。C++标准说:Theheaderdefinesallfunctions,types,andmacrosthesameas7.18intheCstandard.在C标准(N1548)的7.18中,它说:Thefollowingtypedesignatesasignedintegertypecapableofrepresentin

c++ - 为什么它不需要链接库?

#include#includeintmain(){printf("%f",roundf(3.14));}我编译上面的代码(没有使用-lm),添加使用ldda.out,结果是linux-vdso.so.1=>(0x00007fffab9ff000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007fd6da0f8000)/lib64/ld-linux-x86-64.so.2(0x00007fd6da4eb000)为什么a.out没有链接到libm但可以使用roundf(或类似sqrt的东西)?我已经使用nm来测试libc.so.6和ld